Skip to content

feat: add init command with agent scanning and cross-platform setup - #8

Merged
nathanBurg merged 8 commits into
mainfrom
nathanBurg/init-command
Apr 16, 2026
Merged

feat: add init command with agent scanning and cross-platform setup#8
nathanBurg merged 8 commits into
mainfrom
nathanBurg/init-command

Conversation

@nathanBurg

@nathanBurg nathanBurg commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds the githits init CLI command that scans for 9 coding agents (Claude Code, Cursor, VS Code, Windsurf, Cline, Claude Desktop, Codex CLI, Gemini CLI, Google Antigravity), detects installation and configuration status, and sets up GitHits MCP integration via config-file or CLI methods.
  • Implements cross-platform agent detection paths (macOS, Linux, Windows) using getAppDataPath() with proper APPDATA handling on Windows.
  • Introduces service abstractions (ExecService, FileSystemService, PromptService) for dependency injection and testability.
  • Includes comprehensive test coverage (940+ lines for agent definitions alone) with platform stubbing for all three OS variants, ensuring tests pass on macOS, Linux CI, and Windows.
  • Updates login command to use dependency injection pattern and adds confirm3 prompt for yes/no/cancel flows.

This PR was created off of this PR

Test plan

  • bun test — 376 tests pass across 27 files
  • bun run typecheck — clean
  • bun run format:check — clean
  • bun run build — clean
  • CI passes on ubuntu-latest

🤖 Generated with Claude Code

jlitola and others added 3 commits March 26, 2026 10:38
Interactive command that scans for installed coding agents (Claude Code,
Cursor, Windsurf, Claude Desktop, Codex CLI), lets users select which to
configure, and sets up each with confirmation.

Key design decisions:
- CLI-based setup for agents with native commands (claude, codex)
- Atomic config file writes (temp + rename) for others to prevent corruption
- Full DI with ExecService, PromptService, FileSystemService for safe testing
- Pure mergeServerConfig() for JSON operations, extensively tested
- Does not require auth — uses lightweight deps, not createContainer()
- Only catches ExitPromptError (Ctrl+C), rethrows unexpected errors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the `githits init` CLI command that scans for installed coding
agents (Claude Code, Cursor, VS Code, Windsurf, Cline, Claude Desktop,
Codex CLI, Gemini CLI, Google Antigravity), detects their configuration
status, and sets up GitHits MCP integration via config-file or CLI methods.

Includes cross-platform support (macOS, Linux, Windows) for agent detection
paths using getAppDataPath(), comprehensive test coverage with platform
stubbing for all three OS variants, and proper environment variable
isolation for APPDATA on Windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@nathanBurg nathanBurg self-assigned this Apr 2, 2026
nathanBurg and others added 5 commits April 2, 2026 18:30
Adds two new agents to init command scanning:
- Kiro (config-file, ~/.kiro/, mcpServers, remote URL)
- OpenCode (config-file, binary detection via which/where, "mcp" serversKey,
  array-based command format)

Introduces optional detectBinary field on AgentDefinition for agents that
should be detected by binary presence on PATH rather than config directory
existence. Updates scanAgents to try binary detection before directory
detection. Changes default mock exec to return exitCode 1 to prevent
false positives in binary detection tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Project uses bun (bun.lock), so npm's lockfile should not be tracked.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Removes Kiro from the init command's agent scanning and all
associated test fixtures and assertions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add shell:true on Windows for .cmd/.ps1 shim resolution in exec-service.
Broaden Claude Desktop detection with LOCALAPPDATA and Programs paths.
Add OpenCode directory fallback detection alongside binary detection.
Fix lint issues (unused imports, non-null assertion).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Require CLI agents to be detected via executable availability instead of dot-directories.
Align OpenCode Windows config paths and update init tests/docs to match the new detection contract.
@nathanBurg
nathanBurg requested a review from jlitola April 10, 2026 22:03
@nathanBurg
nathanBurg merged commit e27133f into main Apr 16, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants